"""
异常都是主动抛出的

怎么理解这句话呢？我们分为两点：

python自带的异常
使用标准库/第三方库/自己封装的代码，抛出的异常

先看第一点

我们知道 int('a') 会抛出异常，但这个异常是 python主动抛出的

它检测到这个参数，并不符合转化条件，于是会在转化前抛出异常给代码编写者。

再看第二点

我们这里封装一个函数，来模拟 主动抛出异常的场景
"""
dataDict = {
    'name': '木舟',
    'age': 18
}

def maybyKeyError(key):
    if key in dataDict.keys():
        return dataDict[key]
    else:
        raise KeyError(f"你指定的key {key} 并不存在于字典中，请检查")

print("first execute")
print(maybyKeyError('name'))

print("\nsecond execute")
print(maybyKeyError('age'))

print("\nthird execute")
print(maybyKeyError('sex'))

# 结果
"""
first execute
木舟

second execute
18

third execute
Traceback (most recent call last):
  File "C:\\Users\86131\Desktop\python基础\test\test.py", line 21, in <module>
    print(maybyKeyError('sex'))
  File "C:\\Users\86131\Desktop\python基础\test\test.py", line 11, in maybyKeyError
    raise KeyError(f"你指定的key {key} 并不存在于字典中，请检查")
KeyError: '你指定的key sex 并不存在于字典中，请检查'
"""